home *** CD-ROM | disk | FTP | other *** search
- procedure TPortfolio.SetPrice(const StockName: string; Value: Real);
- var
- i: integer;
- begin
- for i:=0 to FList.Count-1 do
- if CompareText(TStockPrice(FList).StockName,StockName)=0 then
- begin
- if TStockPrice(FList).Price<>Value then
- begin
- FPrice := Value;
- Msg := TStockChangeMessage.Create(nil);
- Msg.CreateParam(ptString,'StockName');
- Msg.Params['StockName'].AsString := FStockName;
- Msg.CreateParam(ptReal,'Price');
- Msg. Params['Price'].AsReal := Value;
- UpdateObservers(Msg);
- end;
- break;
- end;
- end;
-
- procedure TSubjectAbstract.UpdateObservers(Message: TSubjectMessage);
- var
- i: integer;
- begin
- try
- for i:=0 to FObservers.Count-1 do
- TObserverAbstract(FObservers[i]).DataToObserver(Message);
- finally
- If Message.Owner=nil then
- Message.Free;
- end;
- end;
-
- procedure TObserverBarChart.DataToObserver(Message: TSubjectMessage);
- begin
- if (Message is TStockChangeMessage) and Displaying(Message.Params['StockName'].AsString) then
- RefreshStock(Message.Params['StockName'].AsString, Message.Params['Price'].AsReal);
- end;